package com.gxa.hualianeshop.service;
import com.gxa.hualianeshop.entity.pojo.CartItem;

import java.util.Map;

/**
* 购物车业务采用全redis方式设计 , 不会经过持久化, 只做缓存处理
* 使用hash作为数据类型设计, hash中的key为 cart:用户编号  field为商品项的skuId , value为CartItem的对象序列化数据
 * @author bill
 * @date 2023/6/20 10:35
 */
public interface CartService {

    /**
     * 添加商品到购物车
     * @param userId 用户编号
     * @param skuId sku商品编号
     * @param num 添加的数量
     */
    void addGoodsToCart(Long userId, Long skuId, Integer num);

    /**
     * 修改购物项数量
     * @param userId 用户编号
     * @param skuId sku商品编号
     * @param num 修改商品数量
     */
    void updateCartItemNum(Long userId, Long skuId, Integer num);

    /**
     * 移除购物项
     * @param skuId
     * @param userId 用户编号
     */
    Boolean removeCartItem(Long userId, Long skuId);

    /**
     * 清空购物车
     * @param userId 用户编号
     */
    void clearCart(Long userId);

    /**
     * 查询购物项
     * @param userId 用户编号
     * @param skuId 商品sku编号
     * @return CartItem 购物车商品项对象
     */
    CartItem queryUserCartItem(Long userId, Long skuId) ;

    /**
     * 查询购物车
     * @return
     */
    Map queryUserCart(Long userId);
}